package cn.wolfcode.luowowo.article.service;

import cn.wolfcode.luowowo.article.domain.StrategyDetail;
import cn.wolfcode.luowowo.article.domain.Travel;
import cn.wolfcode.luowowo.article.domain.TravelContent;
import cn.wolfcode.luowowo.article.query.TravelsQuery;
import cn.wolfcode.luowowo.article.vo.TravelPersistenceVo;
import cn.wolfcode.luowowo.member.domain.UserInfo;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * 游记
 */
public interface ITravlesService {
    /**
     * 分页
     * @param qo
     * @return
     */
    PageInfo query(TravelsQuery qo);

    /**
     * 保存或更新
     * @param travel
     * @return
     */
     Long saveOrUpdate(Travel travel,UserInfo userInfo);

    /**
     * 查询游记
     * @param id
     * @return
     */
    Travel get(Long id);

    /**
     * 查询游记内容
     * @param id
     * @return
     */
    TravelContent queryContent(Long id);

    /**
     * 目的地下前三的游记
     * @return
     */
    List<Travel> selectViewNumTop3(Long destId);

    /**
     * 修改游记的状态
     * @param id
     * @param state
     */
    void updateState(Long id, int state);

    /**
     * 检查并查询游记
     * @param travelId
     * @param userInfo
     * @return
     */
    public Travel checkAndQueryTravel(Long travelId, UserInfo userInfo);

    /**
     * 查询所有的游记
     * @return
     */
    List<Travel> list();
    /**
     * 数据落地
     * @param spvo 攻略的持久化vo
     */
    void updateStatisVo(TravelPersistenceVo spvo);

    List<Travel> queryTravelByTop5(Long sid);



    List<Travel> queryFroList(Long sid);

    int queryForTotal(Long sid);

    Travel queryforTravelByDestId(long destId);

    /**
     * 求回复数
     * @param uid
     * @return
     */
    int queryForReplynum(Long uid);

    /**
     * 求浏览数
     * @param uid
     * @return
     */
    int queryForViewnum(Long uid);

    List<Travel> queryTravel(List<Long> travelsIds);
}
